/**
 * AppProperties.java
 * 
 * Copyright@2015 OVT Inc. All rights reserved. 
 * 
 * May 13, 2015
 */
package com.ovt.doorbell.payment.dao.config;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

/**
 * AppProperties
 * 
 * @Author zhi.liu
 * @Version 1.0
 * @See
 * @Since [OVT Cloud Platform]/[API] 1.0
 */
@Component
public class AppProperties
{
    // system
    @Value("${system.version}")
    public String systemVersion;
    
    // cookies
    @Value("${cookie.access_token.age}")
    public int cookieAccessTokenAge;

    @Value("${cookie.find_password_token.age}")
    public int cookieFindPasswordTokenAge;

    // user operation
    @Value("${find_password.max_times_per_day}")
    public int findPasswordMaxTimesPerDay;
    
    // service
    @Value("${service.trial_time}")
    public int serviceTrialTime;
    
    @Value("${service.trial_instance_num}")
    public int serviceTrialInstanceNum;
    
    @Value("${service.accesskey.max_num_per_instance}")
    public int serviceAccessKeyMaxNumPerInstance;
    
    @Value("${service.accesskey.max_num_per_user}")
    public int serviceAccessKeyMaxNumPerUser;
    
    @Value("${service.host.url}")
    public String serviceHostUrl;
    
    @Value("${service.http.connection_timeout}")
    public int serviceHttpConnectionTimeout;
    
    @Value("${service.http.socket_timeout}")
    public int serviceHttpSocketTimeout;
    
    @Value("${service.http.max_connections}")
    public int serviceHttpMaxConnections;
    
    @Value("${service.http.connection_time_to_live}")
    public int serviceHttpConnectionTtl;
    
    @Value("${service.http.tcp_no_delay}")
    public boolean serviceHttpTcpNoDelay;
    
    // cache
    @Value("${cache.local.limit}")
    public int cacheLocalLimit;

    // thread pool
    @Value("${thread.core.pool.size}")
    public int threadCorePoolSize;
    
    @Value("${thread.max.pool.size}")
    public int threadMaxPoolSize;
    
    @Value("${thread.keepAliveTime}")
    public long threadKeepAliveTime;
    
    @Value("${thread.shutdown.timeout}")
    public long threadShutdownTimeout;
    
    @Value("${thread.schdule.initialDelay}")
    public long threadSchduleInitialDelay;
    
    @Value("${thread.schdule.period}")
    public long threadSchdulePeriod;
    
    // log
    @Value("${log.userActivity.enable}")
    public boolean logUserActivityEnable;
    
    @Value("${log.serviceAccess.enable}")
    public boolean logServiceAccessEnable;
    
    // message
    @Value("${message.batch.size}")
    public int messageBatchSize;
    
    @Value("${message.default.consumer.number}")
    public int messageDefaultConsumerNumber;
    
    
}
